/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cafeinatpv;

import java.io.IOException;
import java.util.ArrayList;

/**
 *
 * @autoria compartida
 *
 */
public abstract class Catalogo {

    private static int numItems;
    private static String catalogo;
    private static ArrayList<Producto> cache;
    private static CatalogoCSV actual;

    protected Catalogo(int nItems, String fuente) throws IOException {
        actual = new CatalogoCSV(nItems, fuente);
        actual.recarga(nItems);
    }

    protected Catalogo() {
    }

    ;

    public void setCatalogoEspecial(String string) {
        catalogo = string;
    }

    public int getNumItems() {
        return numItems;
    }

    protected void setNumItems(int pase) {
        numItems = pase;
    }

    public static Catalogo instancia() {
        return actual;
    }

    protected static void meteProducto(Producto p) {
        cache.add(p);
        numItems++;
    }

    public static void inicia(int nItems, String fuente) throws IOException {
        cache = new ArrayList<Producto>();
        numItems = nItems;
        catalogo = fuente;
        actual = new CatalogoCSV(nItems, fuente);
    }

    protected static void crea(int nItems, String fuente, CatalogoCSV hijo) throws IOException {
        cache = new ArrayList<Producto>();
        actual = hijo;
    }

    public static String getCatalogo() {
        return catalogo;
    }

    protected static Producto getEnPosicion(int i) {
        return cache.get(i);
    }

    protected static void limpia() {
        cache.clear();
        numItems = 0;
    }

    public abstract void setCatalogo(String fichero);

    public abstract void recarga(int numero) throws IOException;

    public abstract Producto getProducto(String ID);
}
